#ifndef _AVLTREE_H
#define _AVLTREE_H

#define ElementType int

struct AVLNode;
typedef struct AVLNode* Position;
typedef struct AVLNode* AVLTree;

AVLTree MakeEmpty(AVLTree tree);
Position Find(AVLTree tree, ElementType x);
Position FindMin(AVLTree tree);
Position FindMax(AVLTree tree);
AVLTree Insert(AVLTree tree, ElementType x);
AVLTree Delete(AVLTree tree, ElementType x);
ElementType Retrive(Position position);
void TestAVLTree();
void InOrder(AVLTree tree);
void PreOrder(AVLTree tree);
void PostOrder(AVLTree tree);

#endif